iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
Software Development

闖入DLL的世界 DLL我要進來了哦系列 第 29

第二十九天:做一個總結吧

  • 分享至 

  • xImage
  •  

嗨大家我是Andy,今天來到了第二十九天,我們像以前整理一下這幾天所學的,然後明天應該就是完賽心得了,好廢話不多說,我們直接進入主題。


常用函數

  • LoadLibrary
  • FreeLibrary
  • GetProcAddress
  • OpenProcess
  • CloseHandle
  • VirtualAlloc
  • CreateRemoteThread
    這些都是我們這幾天所講述常用的函數,當然在調用這些函數記得要引用windows.h這個標頭檔,在我們一開始也有說程式在執行的時候只需要dll或是lib,但在編譯的時候就需要標頭檔.h

DLL的殼

有分商用殼以私有殼,當然在破解的時候需要先脫殼,前天我門就使用PEiD去查殼,當然也有明明就有殼但是卻說沒有的狀況,那就需要手動脫殼了。
這邊是一些軟體的整理

  • OllyDBG
  • DLL Loader
  • PEiD

DLL 注入卸載

注入的時候要使用VirtualAlloc申請一塊空的位址去讓要注入的DLL注入,卸載的時候就不需要,在createRmoteThread也要改LoadLibrary和FreeLibrary。

//注入
#include <windows.h>
#include <iostream>
typedef void (*ccc)();
int main() {
	int b;
	while (std::cin >> b) {
		if (b == 2) {
			HMODULE hmodule = LoadLibrary("Dll5.dll");
			if (hmodule == NULL) {
				MessageBox(NULL, "沒有抓到DLL", "標題", MB_OK);
				return -1;
			}
			ccc a = (ccc)GetProcAddress(hmodule, "ccc");
			a();
		}
	}
}
//卸載
#include <windows.h>
#include <iostream>
typedef void (*ccc)();
int main() {
	int b;

	while (std::cin >> b) {
		if (b == 2) {
			HMODULE hmodule = LoadLibrary("Dll5.dll");
			if (hmodule == NULL) {
				MessageBox(NULL, "沒有抓到DLL", "標題", MB_OK);
				return -1;
			}
			ccc a = (ccc)GetProcAddress(hmodule, "ccc");
			a();
			FreeLibrary(hmodule);
		}
			
	}
}

結語

今天第二十九天了就把之前的重點都整理整理回顧一下,那今天就先這樣了我們明天見,感謝各位這個月以來的收看,都是廢文嗚嗚嗚。


上一篇
第二十八天:查殼
下一篇
第三十天:完賽心得
系列文
闖入DLL的世界 DLL我要進來了哦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言